1. Field of Use
This invention relates to pipelined data processing systems and more particularly to apparatus for resolving resource conflicts within such systems.
2. Prior Art
Many techniques have been developed in order to improve the performance of high performance systems. These have involved the development of socalled pipelined processors which process instructions stored in cache memories in such a manner that more than one instruction is actually being processed at any one given time. In such a system, one instruction might be completed within a given machine cycle at the same time as another instruction had only been partially completed.
While such systems achieve high performance, instructions are placed serially into the pipeline and as soon as the stage has completed its operation, the instruction is passed onto the next processing stage. Therefore, instructions are executed in the order in which they enter the pipeline. In order to improve system performance, some systems overlap the operations being executed by certain stages within the pipeline. An example of this type of system is described in U.S. Pat. No. 4,760,519.
While the above improves performance, instructions are still required to be executed in the order in which they are introduced into the pipeline. The performance of a pipelined system has been improved by having the processing unit operate in a production line fashion in which earlier stages are able to complete the execution of certain types of instructions ahead of earlier introduced instructions. This processing unit is subject of related copending application titled "Production Line Method and Apparatus for High Performance Instruction Execution."
While pipelined processing units provide high performance, their performance still depends greatly on the order of the instructions in the instruction stream. That is, if consecutive instructions have data and control dependencies and contend for resources, then "holes" in the pipeline or production line will develop and performance will suffer.
To improve performance, in certain systems it may be possible to arrange the code or schedule it so that dependencies and resource conflicts are minimized. Registers can also be allocated so that register conflicts are reduced. However, register conflicts caused by data dependencies cannot be eliminated in this fashion. The problem of resource conflicts becomes even more important in the case of the production type processing unit in that any halt in operation will greatly affect performance.
Accordingly, it is a primary object of the present invention to provide method and apparatus for detecting resource conflicts which permits high performance pipeline operation.
It is another object of the present invention to provide a method and apparatus which maximizes operation and requires a minimum of complexity.